package edu.fasta.sisinfo2.poker;

import java.util.ArrayList;
import java.util.List;

public class JugadorImplementacion {
	
	private int fichas;
	private Apuesta apuesta;
	private Mano mano;
	private String nombre;
	private boolean activo;
	private boolean subioApuesta;
	
	public JugadorImplementacion(String nombre) {
		this.setNombre(nombre);
		this.setFichas(10000);
		this.setApuesta(new Apuesta(this));	
		this.setActivo(false);
		this.setMano(new Mano());
		this.setSubioApuesta(false);
	}
	
	public int allIn(){
		int apuestaTodo = this.getFichas();
		this.getApuesta().subirApuesta(apuestaTodo);
		this.setFichas(0);
		return apuestaTodo;
	}

	public int call(int apuestaActual){
		this.getApuesta().subirApuesta(apuestaActual);
		this.setFichas(this.getFichas() - apuestaActual);
		return apuestaActual;
	}
	
	public int raise(int apuestaAumentada){
		this.getApuesta().subirApuesta(apuestaAumentada);
		this.setFichas(this.getFichas() - apuestaAumentada);
		return apuestaAumentada;
	}
	
	public void check(){
		// TODO pasar de turno
	}
	
	public List fold(){
		List cartasJugador = new ArrayList();
		cartasJugador = this.getMano().getCartasJugador();
		this.getMano().getCartasJugador().removeAll(this.getMano().getCartasJugador());
		return cartasJugador;
	}
		
	public boolean isActivo() {
		return activo;
	}

	public void setActivo(boolean activo) {
		this.activo = activo;
	}

	public Apuesta getApuesta() {
		return apuesta;
	}

	public void setApuesta(Apuesta apuesta) {
		this.apuesta = apuesta;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public int getFichas() {
		return fichas;
	}

	public void setFichas(int fichas) {
		this.fichas = fichas;
	}

	public Mano getMano() {
		return mano;
	}

	public void setMano(Mano mano) {
		this.mano = mano;
	}

	public boolean isSubioApuesta() {
		return subioApuesta;
	}

	public void setSubioApuesta(boolean subioApuesta) {
		this.subioApuesta = subioApuesta;
	}
}
